﻿namespace ProblemsSet
{
    public class Problem_92 : BaseProblem
    {
        public override object GetResult()
        {
            //const int max = 2000000;
            const int max = 10000000;

            long res = 0;

            for (ulong n = 1; n <= max; n++)
            {
                var tmp = MathLogic.GetChains(n);
                if (tmp[tmp.Count - 1] == 89)
                    res++;
            }
            return res;
        }

        public override string Problem
        {
            get
            {
                return @"A number chain is created by continuously adding the square of the digits in a number to form a new number until it has been seen before.

For example,

44  32  13  10  1  1
85  89  145  42  20  4  16  37  58  89

Therefore any chain that arrives at 1 or 89 will become stuck in an endless loop. What is most amazing is that EVERY starting number will eventually arrive at 1 or 89.

How many starting numbers below ten million will arrive at 89?";
            }
        }

        public override bool IsSolved
        {
            get
            {
                return true;
            }
        }

        public override object Answer
        {
            get
            {
                return 8581146;
            }
        }

    }
}
